#include <string>
#include <iostream>
using namespace std;

#ifndef Meeting_H_
#define Meeting_H_

#define BASE 2
#define EXTENDED 1

class Meeting {

public:
	//Default Constructor
	Meeting();
	//Destructor
	virtual ~Meeting();
	//Copy Constructor
	Meeting(const Meeting& m);
	//Constructor for regular meetings
	Meeting(float start_t,float end_t,string& subject);

	//No operator '=' overloading implementation needed because Meeting and E_Meeting have no pointers fields

	const float getStartHour() const;
	void setStartHour(float t);
	const float getEndHour() const;
	void setEndHour(float t);
	const string& getSubject() const;
	void setSubject(const string& subj);

	//This method will be dynamically called according to the type of meeting defined. It will and determine whether there is an overlap according to the type
	//of the meeting (base or extended) : if the meeting is from the base type then we will compare by hours only and if it is from the extended
	//type we will compare also by attendees
	virtual const bool overlapWith(const Meeting& m)const ;
	virtual void printMeeting() const;
	virtual const int getWhoAmI() const;
protected:
	//1-Extended Meeting , 2-Base Meeting
	int whoAmI;

private:

	float start_t;
	float end_t;
	string subject;
};
#endif
